/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package view;
import java.awt.Graphics;
import java.awt.Point;
/**
 * Az Wire-nek megfelelő osztály a grafikus megjelenítésben.
 * @author taplo
 */
public class VisualWire{
    private Point[][] breakpoints;
    private int ID;

    VisualWire(int id, Point[][] bp){
        breakpoints =bp;
        ID = id;
    }
    
    /**
     * A vezeték kezdeti csomópontának beállítása (mindegyiknek ugyanaz)
     * @param point A csatlakozási pont, ahonnan a vezeték indul
     */
    public void setStartingPoint(Point point){
        for (Point p[] : breakpoints){
            p[0] = point;
        }
    }

    /**
     * A vezeték végső csomópontjának beállítása (minden ágra külön)
     * @param point A csatéalpzűso pont, ahova a vezeték végződik
     * @param branch Az ág aminek ez a végpontja
     * @throws IllegalArgumentException Hibát dob, ha már be volt kötve a csomópont, vagy rossz a branch paraméter
     */
    public void setEndPoint(Point point,int branch) throws IllegalArgumentException {
        if (branch >= breakpoints.length)
            throw new IllegalArgumentException("A(z) " + ID + ". vezetéknek nincs " + branch + ". ága.");
        int temp = breakpoints[branch].length - 1;
        if (breakpoints[branch][temp] == null)
            breakpoints[branch][temp] = point;
        else
            throw new IllegalArgumentException("A(z) "+Integer.toString(ID)+". vezeték "+Integer.toString(branch)+". ága már foglalt.");
    }
    
    /**
     * Kirajzoló függvény
     * @param g A rajzfelület amire rajzolunk
     */
    public void draw(Graphics g){
        //Minden egyes ágra
        for (Point p[] : breakpoints){
            //Csak akkor rajzolunk ha van kezdő és vég csomópont
            if (p[0] != null && p[p.length - 1] != null)
                //Összekötjük a töréspontokat
                for (int i = 0; i < p.length - 1; i++){
                    g.drawLine(p[i].x, p[i].y ,p[i+1].x ,p[i+1].y);
            }
        }
    }

}
